<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Concept: 组件规约</title>
<meta name="uma.type" content="Concept">
<meta name="uma.name" content="component_specification">
<meta name="uma.presentationName" content="组件规约">
<meta name="element_type" content="concept">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_wfrDwOM8EdmaZcY4PeqVxA"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Concept: 组件规约</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/concept.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">组件规约是对组成系统的一组特定硬件和软件组件的描述。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup/tasks/operation_design_BF30F48F.html" guid="_JPsAEN90EdmvvvV6NEU6eA">Operation Design</a>
</li>
<li>
<a href="./../../../rup/domains/analysis_and_design_BD3BBB1D.html" guid="_kjFBYN7HEdm8G6yT7-Wdqw">分析与设计</a>
</li>
<li>
<a href="./../../../rup/roles/rup_capsule_designer_F3E66EDF.html" guid="{86253FE7-0036-4D14-8BD7-C18CE86A5E14}">封装体设计员</a>
</li>
<li>
<a href="./../../../rup/roles/rup_designer_BA8DE74E.html" guid="{DB21F5EF-810B-4994-B120-79FA8774FA9D}">设计人员</a>
</li>
<li>
<a href="./../../../rup_bm/tasks/bm_operation_design_CB34E401.html" guid="_nJsykBpVEdqUwb9RAn2tTA">业务操作设计</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><h3>
    简介
</h3>
<p>
    从架构的分析级别转化到设计级别需要确定硬件和软件组件设计。此设计级别的规约包含要部署的组件：硬件、软件和工作者。
</p>
<p>
    硬件组件是通过分析位置、派生特征以及托管子系统操作来确定的。有了此信息，就可以选择在描述符级别实现位置。描述符节点图指定了组件、服务器、工作站、工作者等，但没有提供实现这些组件的特定技术选项。该图是实现<a class="elementLinkWithType" href="./../../../rup/guidances/concepts/locality_E2133437.html" guid="_qmDvkOM9EdmaZcY4PeqVxA">Concept: 位置</a>中所显示的位置图的描述符节点图示例。实现位置是通过四个组件实现的：仓库网关、邮件／邮资系统和两个工作者。
</p>
<p>
    描述符节点继承了它们在分配或预算过程中的位置的特征。
</p>
<p align="center">
    <img height="448" src="./../../../rup/guidances/concepts/resources/descnode.gif" alt="附带文本中描述的图。" width="679" border="0" />
</p>
<p align="center">
    <!--Add a caption for this figure? -->
</p>
<h3>
    硬件
</h3>
<p>
    通过从“描述符”视图中进行成本／性能／容量权衡来确定实现硬件组件（硬件的实际部署设置）。实际上，系统可能有多种硬件配置，每种配置满足不同的价格／性能点。&nbsp;
</p>
<h3>
    软件
</h3>
<p>
    通过指定一组类，然后将与这些类相关联的代码编译并汇编成可执行文件来确定组件。考虑周全的软件组件设计必须反映各种问题：&nbsp;
</p>
<ul>
    <li>
        位置 — 组件需要运行的位置
    </li>
    <li>
        主管 — 执行代码的处理器指令集和内存限制
    </li>
    <li>
        并行 — 不同的主机或内存空间分开处理以解决可靠性和相关问题
    </li>
</ul>
<p>
    由此可知，指定组件所需的信息包括对位置及其实现的硬件组件的托管子系统操作的调查，以及对流程连同协作的已执行操作的调查，从而实现子系统操作，使得这一组类形成组件结构。
</p>
<p>
    初步近似假设所有类都驻留在单个组件中，并且提供组件和子系统的一对一映射 — 这是<a class="elementLinkWithType" href="./../../../rup/guidances/guidelines/design_subsystem_B26FD609.html" guid="1.2314266786534317E-305">Guideline: 设计子系统</a>中提供的缺省建议。接着，查找对组件进行进一步分区的原因。如果这一组类包含多个活动类（用来代表进程），则对每个组件检验一个活动类（进程）的分区，并用最紧密的关系使这些类形成集群。然后，某些类可被多个组件使用。如果其中某些类在由几个组件访问的公共实例组中呈现共享状态，则在这种情况下就需要将它们拆分到它们自己的另一组件中。如果共享类是无状态的，并且在功能上是内聚的，则可选择将它们拆分到服务组件（无状态的功能组件）。即使在被动子系统（无活动类）中，也仍然可以选择进行进一步分区，例如查找更细化的可复用组件。通过对组件进行进一步重新分区／划分来完成该过程，以便考虑特定的技术选项（例如
    J2EE&trade; 平台或 Microsoft&reg; .NET）、内存限制（例如 .exe和 .dll 权衡）、承载介质限制等。&nbsp;
</p>
<p>
    执行这些任务将产生一组特定的硬件和软件组件，这些组件构成一个系统。
</p><br /></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
